module Base
{

    craftRecipe VFX_PrepareLasagna
    {
        timedAction = VFX.RoastingPanCooking,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:1,
        category = Cooking,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1  [Base.RoastingPan] mode:destroy flags[InheritCondition],
            item 10 [VFX.LasagnaSheets] flags[IsUncookedFoodItem],
            item 1  [Base.Marinara;VFX.SpicyMarinara;VFX.MeatSauce;VFX.BasilPestoSauce;VFX.AlfredoSauce;VFX.BechamelSauce;VFX.HomemadeMarinara_Open;VFX.HomemadeSpicyMarinara_Open;VFX.HomemadeMeatSauce_Open;VFX.HomemadeBasilPestoSauce_Open;VFX.HomemadeAlfredoSauce_Open;VFX.HomemadeBechamelSauce_Open] flags[ItemCount],
        }

        outputs
        {
            item 1 VFX.LasagnaPreparation,
        }
    }

    craftRecipe VFX_PrepareMeatloaf
    {
        timedAction = VFX.RoastingPanCooking,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:1,
        category = Cooking,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1  [Base.RoastingPan] mode:destroy flags[InheritCondition],
            item 30 tags[VFX:GroundMeat] flags[IsUncookedFoodItem],
        }

        outputs
        {
            item 1 Base.VFXMeatloafPreparation,
        }
    }

    craftRecipe VFX_PrepareBakedPotato
    {
        timedAction = VFX.RoastingPanCooking,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:1,
        category = Cooking,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [Base.RoastingPan] mode:destroy flags[InheritCondition],
            item 2 [Base.Potato] flags[ItemCount;IsUncookedFoodItem],
        }

        outputs
        {
            item 1 Base.VFXBakedPotatoPreparation,
        }
    }

    craftRecipe VFX_PrepareScallopedPotatoBake
    {
        timedAction = VFX.RoastingPanCooking,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:3,
        category = Cooking,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [Base.RoastingPan] mode:destroy flags[InheritCondition],
            item 5 [VFX.SlicedPotato] flags[ItemCount;IsUncookedFoodItem],
            item 1 [VFX.HeavyCream] flags[ItemCount],
        }

        outputs
        {
            item 1 Base.VFXScallopedPotatoBakePreparation,
        }
    }

    craftRecipe VFX_PrepareQuiche
    {
        timedAction = VFX.BowlMixing,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:3,
        category = Cooking,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 tags[base:mixingutensil] mode:keep flags[MayDegradeVeryLight],
            item 1 [Base.Bowl;Base.ClayBowl] mode:keep flags[ItemCount],
            item 1 [Base.BakingPan] mode:destroy flags[InheritCondition],
            item 6 [Base.Egg;Base.TurkeyEgg;Base.WildEggs] flags[ItemCount;IsUncookedFoodItem],
        }

        outputs
        {
            item 1 Base.VFXQuichePreparation,
        }
    }

    craftRecipe VFX_PrepareNachos
    {
        timedAction = VFX.RoastingPanCooking,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:1,
        category = Cooking,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [Base.RoastingPan] mode:destroy flags[InheritCondition],
            item 1 [Base.TortillaChips;Base.TortillaChipsBaked] flags[ItemCount],
        }

        outputs
        {
            item 1 Base.VFXNachosPreparation,
        }
    }

    craftRecipe VFX_PrepareEnchilada
    {
        timedAction = VFX.RoastingPanCooking,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:1,
        category = Cooking,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 tags[base:mixingutensil] mode:keep flags[MayDegradeVeryLight],
            item 1 [Base.RoastingPan] mode:destroy flags[InheritCondition],
            item 1 [Base.Tortilla] flags[ItemCount],
        }

        outputs
        {
            item 1 Base.VFXEnchiladaPreparation,
        }
    }

    craftRecipe VFX_PrepareCheesecake
    {
        timedAction = VFX.BowlMixing,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:3,
        category = Cooking,
        OnCreate = VFX.TransferNutritionReturnReplaceOnUse,

        inputs
        {
            item 1  tags[base:mixingutensil] mode:keep flags[MayDegradeVeryLight],
            item 1  [Base.RollingPin] mode:keep flags[MayDegradeVeryLight],
            item 1  [Base.Bowl] mode:keep flags[InheritCondition],
            item 1  [Base.BakingPan] mode:destroy flags[InheritCondition],
            item 1  [VFX.CreamCheese;VFX.CreamCheeseHomemade] flags[ItemCount],
            item 15 [Base.Sugar],
            item 2  tags[base:egg] flags[ItemCount;IsUncookedFoodItem],
            item 1  [Base.GrahamCrackers] flags[ItemCount],
        }

        outputs
        {
            item 1 Base.VFXCheesecakePreparation,
        }
    }

    craftRecipe VFX_PrepareMilkshake
    {
        timedAction = VFX.MilkshakePreparing,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:1,
        category = Cooking,
        OnCreate = VFX.TransferNutritionReturnReplaceOnUse,

        inputs
        {
            
            item 5 tags[VFX:Icecream] flags[AllowFrozenItem],
            item 1 [VFX.MilkshakeGlass] mode:destroy,
                -fluid 0.2 [CowMilk;VFX_SoyMilk;SheepMilk] mode:mixture,
        }

        outputs
        {
            item 1 Base.VFXMilkshakePreparation,
        }
    }

    craftRecipe VFX_PrepareSushi
    {
        timedAction = VFX.BowlMixing,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        xpAward = Cooking:3,
        category = Cooking,
        Tooltip = Tooltip_VFX_Recipe_RiceCooked,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [Base.Seaweed] flags[ItemCount],
            item 5 [VFX.WaterSaucepanBrownRice;VFX.WaterSaucepanCopperBrownRice;VFX.WaterPotBrownRice;VFX.WaterPotForgedBrownRice;VFX.BrownRiceBowl;VFX.WaterSaucepanJasmineRice;VFX.WaterSaucepanCopperJasmineRice;VFX.WaterPotJasmineRice;VFX.WaterPotForgedJasmineRice;VFX.JasmineRiceBowl;VFX.WaterSaucepanBasmatiRice;VFX.WaterSaucepanCopperBasmatiRice;VFX.WaterPotBasmatiRice;VFX.WaterPotForgedBasmatiRice;VFX.BasmatiRiceBowl;VFX.WaterSaucepanArborioRice;VFX.WaterSaucepanCopperArborioRice;VFX.WaterPotArborioRice;VFX.WaterPotForgedArborioRice;VFX.ArborioRiceBowl;Base.WaterPotRice;Base.WaterPotForgedRice;Base.WaterSaucepanRice;Base.WaterSaucepanRiceCopper;Base.RiceBowl] mappers[RicePotType] flags[IsCookedFoodItem],
        }

        outputs
        {
            item 1 Base.VFXSushiPreparation,
            item 1 mapper:RicePotType,
        }

        itemMapper RicePotType
        {
            Base.Saucepan = VFX.WaterSaucepanBrownRice,
            Base.SaucepanCopper = VFX.WaterSaucepanCopperBrownRice,
            Base.Pot = VFX.WaterPotBrownRice,
            Base.PotForged = VFX.WaterPotForgedBrownRice,
            Base.Bowl = VFX.BrownRiceBowl,

            Base.Saucepan = VFX.WaterSaucepanJasmineRice,
            Base.SaucepanCopper = VFX.WaterSaucepanCopperJasmineRice,
            Base.Pot = VFX.WaterPotJasmineRice,
            Base.PotForged = VFX.WaterPotForgedJasmineRice,
            Base.Bowl = VFX.JasmineRiceBowl,

            Base.Saucepan = VFX.WaterSaucepanBasmatiRice,
            Base.SaucepanCopper = VFX.WaterSaucepanCopperBasmatiRice,
            Base.Pot = VFX.WaterPotBasmatiRice,
            Base.PotForged = VFX.WaterPotForgedBasmatiRice,
            Base.Bowl = VFX.BasmatiRiceBowl,

            Base.Saucepan = VFX.WaterSaucepanArborioRice,
            Base.SaucepanCopper = VFX.WaterSaucepanCopperArborioRice,
            Base.Pot = VFX.WaterPotArborioRice,
            Base.PotForged = VFX.WaterPotForgedArborioRice,
            Base.Bowl = VFX.ArborioRiceBowl,

            Base.Pot = Base.WaterPotRice,
            Base.PotForged = Base.WaterPotForgedRice,
            Base.Saucepan = Base.WaterSaucepanRice,
            Base.SaucepanCopper = Base.WaterSaucepanRiceCopper,
            Base.Bowl = Base.RiceBowl,
        }
    }

    craftRecipe VFX_PrepareFriedRice
    {
        timedAction = VFX.BowlMixing,
        Time = 80,
        Tags = AnySurfaceCraft;Cooking,
        category = Cooking,
        Tooltip = Tooltip_VFX_Recipe_RiceCooked,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [Base.Pan;Base.PanForged] mappers[PanType] mode:destroy flags[InheritCondition],
            item 1 [VFX.WaterSaucepanBrownRice;VFX.WaterSaucepanCopperBrownRice;VFX.WaterPotBrownRice;VFX.WaterPotForgedBrownRice;VFX.BrownRiceBowl;VFX.WaterSaucepanJasmineRice;VFX.WaterSaucepanCopperJasmineRice;VFX.WaterPotJasmineRice;VFX.WaterPotForgedJasmineRice;VFX.JasmineRiceBowl;VFX.WaterSaucepanBasmatiRice;VFX.WaterSaucepanCopperBasmatiRice;VFX.WaterPotBasmatiRice;VFX.WaterPotForgedBasmatiRice;VFX.BasmatiRiceBowl;VFX.WaterSaucepanArborioRice;VFX.WaterSaucepanCopperArborioRice;VFX.WaterPotArborioRice;VFX.WaterPotForgedArborioRice;VFX.ArborioRiceBowl;Base.WaterPotRice;Base.WaterPotForgedRice;Base.WaterSaucepanRice;Base.WaterSaucepanRiceCopper;Base.RiceBowl] mappers[RicePotType] flags[ItemCount;IsCookedFoodItem],
            item 1 tags[base:egg] flags[IsUncookedFoodItem;InheritFoodAge;ItemCount],
        }

        outputs
        {
            item 1 mapper:PanType,
            item 1 mapper:RicePotType,
        }

        itemMapper PanType
        {
            Base.VFXFriedRicePreparation = Base.Pan,
            Base.VFXFriedRicePreparationForged = Base.PanForged,
        }

        itemMapper RicePotType
        {
            Base.Saucepan = VFX.WaterSaucepanBrownRice,
            Base.SaucepanCopper = VFX.WaterSaucepanCopperBrownRice,
            Base.Pot = VFX.WaterPotBrownRice,
            Base.PotForged = VFX.WaterPotForgedBrownRice,
            Base.Bowl = VFX.BrownRiceBowl,

            Base.Saucepan = VFX.WaterSaucepanJasmineRice,
            Base.SaucepanCopper = VFX.WaterSaucepanCopperJasmineRice,
            Base.Pot = VFX.WaterPotJasmineRice,
            Base.PotForged = VFX.WaterPotForgedJasmineRice,
            Base.Bowl = VFX.JasmineRiceBowl,

            Base.Saucepan = VFX.WaterSaucepanBasmatiRice,
            Base.SaucepanCopper = VFX.WaterSaucepanCopperBasmatiRice,
            Base.Pot = VFX.WaterPotBasmatiRice,
            Base.PotForged = VFX.WaterPotForgedBasmatiRice,
            Base.Bowl = VFX.BasmatiRiceBowl,

            Base.Saucepan = VFX.WaterSaucepanArborioRice,
            Base.SaucepanCopper = VFX.WaterSaucepanCopperArborioRice,
            Base.Pot = VFX.WaterPotArborioRice,
            Base.PotForged = VFX.WaterPotForgedArborioRice,
            Base.Bowl = VFX.ArborioRiceBowl,

            Base.Pot = Base.WaterPotRice,
            Base.PotForged = Base.WaterPotForgedRice,
            Base.Saucepan = Base.WaterSaucepanRice,
            Base.SaucepanCopper = Base.WaterSaucepanRiceCopper,
            Base.Bowl = Base.RiceBowl,
        }
    }

    craftRecipe VFX_GetBakedPotato
    {
        timedAction = VFX.TakeBakedPotato,
        time = 20,
        category = Cooking,
        Tags = InHandCraft;Cooking,
        ToolTip = Tooltip_Recipe_MustCookedGet,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [Base.VFXBakedPotatoPreparation;Base.VFXBakedPotatoEvolved] flags[IsCookedFoodItem;InheritFoodAge;ItemCount],
        }

        outputs
        {
            item 2 Base.VFXBakedPotato,
            item 1 Base.RoastingPan,
        }
    }

    craftRecipe VFX_SliceCheesecake
    {
        timedAction = SliceFood_Surface,
        time = 20,
        category = Cooking,
        Tags = InHandCraft;Cooking,
        ToolTip = Tooltip_Recipe_MustCookedGet,

        inputs
        {
            item 1 tags[base:sharpknife;base:dullknife;base:meatcleaver] mode:keep flags[MayDegradeLight],
            item 1 [Base.VFXCheesecakePreparation;Base.VFXCheesecakeEvolved] flags[InheritFood;IsCookedFoodItem;InheritFoodAge;ItemCount],
        }

        outputs
        {
            item 5 Base.VFXCheesecakeSlice,
            item 1 Base.BakingPan,
        }
    }

    craftRecipe VFX_PrepareSlowCookedBoneBroth
    {
        timedAction = VFX.PotCooking,
        time = 50,
        tags = AnySurfaceCraft;Cooking,
        category = Cooking,

        inputs
        {
            item 1 [Base.Pot;Base.PotForged] mappers[PotType] mode:destroy,
                -fluid 1.5 categories[Water] mode:mixture,
            item 1 [1:Base.AnimalBone;1:Base.LargeAnimalBone;4:Base.SmallAnimalBone;1:Base.JawboneBovide] flags[IsExclusive],
        }


        outputs
        {
            item 1 mapper:PotType,
        }

        itemMapper PotType
        {
            Base.VFXBoneBrothPot = Base.Pot,
            Base.VFXBoneBrothPotForged = Base.PotForged,
        }
    }

    craftRecipe VFX_MakeSourdoughHotDog
    {
        timedAction = VFX.MixingBowl,
        time = 15,
        tags = InHandCraft;Cooking,
        category = Cooking,
        Tooltip = Tooltip_VFX_BunCooked,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [VFX.SourdoughHotdogBun] flags[ItemCount;IsCookedFoodItem;InheritFoodAge],
            item 1 [Base.Hotdog_single] flags[ItemCount;InheritFoodAge],
        }

        outputs
        {
            item 1 Base.VFXSourdoughHotdog,
        }
    }

    craftRecipe VFX_MakeSausageHotdog
    {
        timedAction = VFX.MixingBowl,
        time = 15,
        tags = InHandCraft;Cooking,
        category = Cooking,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [Base.BunsHotdog_single] flags[ItemCount;InheritFoodAge],
            item 1 tags[VFX:Sausage] flags[ItemCount;IsCookedFoodItem;InheritFoodAge],
        }

        outputs
        {
            item 1 Base.VFXSausagedog,
        }
    }

    craftRecipe VFX_MakeSourdoughSausageHotdog
    {
        timedAction = VFX.MixingBowl,
        time = 15,
        tags = InHandCraft;Cooking,
        category = Cooking,
        ToolTip = Tooltip_VFX_BunCooked,
        OnCreate = VFX.TransferNutrition,

        inputs
        {
            item 1 [VFX.SourdoughHotdogBun] flags[ItemCount;IsCookedFoodItem;InheritFoodAge],
            item 1 tags[VFX:Sausage] flags[ItemCount;IsCookedFoodItem],
        }

        outputs
        {
            item 1 Base.VFXSourdoughSausagedog,
        }
    }

    craftRecipe VFX_MakeSandwich
    {
        timedAction = VFX.MixingBowl,
        time = 40,
        tags = InHandCraft;CanBeDoneInDark;Cooking,
        category = Cooking,

        inputs
        {
            item 2 [VFX.SourdoughSlice;VFX.RyeBreadSlice;VFX.RyeSourdoughSlice;VFX.PumpernickelSlice;VFX.BarleyBreadSlice;VFX.BarleySourdoughSlice;VFX.BeerBreadSlice;VFX.MilkBreadSlice;VFX.BriocheSlice;VFX.FocacciaBreadSlice] mappers[BreadType] mode:destroy flags[InheritFood;ItemCount;InheritFoodAge;IsExclusive],
        }

        outputs
        {
            item 1 mapper:BreadType,
        }

        itemMapper BreadType
        {
            Base.VFXSourdoughSandwich = VFX.SourdoughSlice,
            Base.VFXRyeBreadSandwich = VFX.RyeBreadSlice,
            Base.VFXRyeSourdoughSandwich = VFX.RyeSourdoughSlice,
            Base.VFXPumpernickelSandwich = VFX.PumpernickelSlice,
            Base.VFXBarleyBreadSandwich = VFX.BarleyBreadSlice,
            Base.VFXBarleySourdoughSandwich = VFX.BarleySourdoughSlice,
            Base.VFXBeerBreadSandwich = VFX.BeerBreadSlice,
            Base.VFXMilkBreadSandwich = VFX.MilkBreadSlice,
            Base.VFXBriocheSandwich = VFX.BriocheSlice,
            Base.VFXFocacciaBreadSandwich = VFX.FocacciaBreadSlice,
        }
    }

    craftRecipe VFX_PrepareHomemadeSauceTomato
    {
        timedAction = VFX.MixingBowl,
        time = 50,
        tags = AnySurfaceCraft;Cooking,
        category = Cooking,
        OnCreate = VFX.TransferNutritionReturnReplaceOnUse,

        inputs
        {
            item 1 tags[base:mixingutensil] mode:keep flags[MayDegradeVeryLight],
            item 1 tags[base:jar] mode:destroy flags[ItemCount],
            item 1 [Base.JarLid] mode:destroy,
            item 1 [1:Base.CannedTomato_Open;1:Base.CannedTomatoOpen;3:Base.Tomato;1:Base.TomatoPaste] flags[ItemCount;IsExclusive],
        }

        outputs
        {
            item 1 Base.VFXHomemadeSauceTomato,
        }
    }

    craftRecipe VFX_PrepareHomemadeSauceOil
    {
        timedAction = VFX.MixingBowl,
        time = 50,
        tags = AnySurfaceCraft;Cooking,
        category = Cooking,
        OnCreate = VFX.TransferNutritionReturnReplaceOnUse,

        inputs
        {
            item 1 tags[base:mixingutensil] mode:keep flags[MayDegradeVeryLight],
            item 1 tags[base:jar] mode:destroy flags[ItemCount],
            item 1 [Base.JarLid] mode:destroy,
            item 10 [Base.SesameOil;Base.OilVegetable;Base.OilOlive] flags[IsExclusive],
        }

        outputs
        {
            item 1 Base.VFXHomemadeSauceOil,
        }
    }

    craftRecipe VFX_PrepareHomemadeSauceCream
    {
        timedAction = VFX.MixingBowl,
        time = 50,
        tags = AnySurfaceCraft;Cooking,
        category = Cooking,
        OnCreate = VFX.TransferNutritionReturnReplaceOnUse,

        inputs
        {
            item 1 tags[base:mixingutensil] mode:keep flags[MayDegradeVeryLight],
            item 1 tags[base:jar] mode:destroy flags[ItemCount],
            item 1 [Base.JarLid] mode:destroy,
            item 1 [VFX.HeavyCream;VFX.HeavyCreamHomemade] flags[ItemCount],
        }

        outputs
        {
            item 1 Base.VFXHomemadeSauceCream,
        }
    }

    craftRecipe VFX_PrepareHomemadeSauceStock
    {
        timedAction = VFX.MixingBowl,
        time = 50,
        tags = AnySurfaceCraft;Cooking,
        category = Cooking,
        OnCreate = VFX.TransferNutritionReturnReplaceOnUse,

        inputs
        {
            item 1 tags[base:mixingutensil] mode:keep flags[MayDegradeVeryLight],
            item 1 tags[base:jar] mode:destroy flags[ItemCount],
            item 1 [Base.JarLid] mode:destroy,
            item 1 [2:Base.BouillonCube;2:VFX.BeefBouillonCube;2:VFX.FishBouillonCube;2:VFX.VegetableBouillonCube] flags[ItemCount;IsExclusive],
            item 1 [*],
                -fluid 0.3 [Water],
        }

        outputs
        {
            item 1 Base.VFXHomemadeSauceStock,
        }
    }

    craftRecipe VFX_PrepareHomemadeSauceVinegar
    {
        timedAction = VFX.MixingBowl,
        time = 50,
        tags = AnySurfaceCraft;Cooking,
        category = Cooking,
        OnCreate = VFX.TransferNutritionReturnReplaceOnUse,

        inputs
        {
            item 1 tags[base:mixingutensil] mode:keep flags[MayDegradeVeryLight],
            item 1 tags[base:jar] mode:destroy flags[ItemCount],
            item 1 [Base.JarLid] mode:destroy,
            item 10 [Base.Vinegar_Jug;Base.Vinegar2] flags[IsExclusive],
        }

        outputs
        {
            item 1 Base.VFXHomemadeSauceVinegar,
        }
    }

}
